package com.jic.member.service;

import com.jic.common.base.vo.PageResult;
import com.jic.common.base.vo.RestResult;
import com.jic.member.entity.TUserGroup;
import com.jic.member.request.TUserGroupAddOrUpdateRequest;
import com.jic.member.request.TUserGroupRequest;
import com.jic.member.request.TripLabelArrayRequest;
import com.jic.member.request.TripUserGroupRequest;
import com.jic.member.response.TUserGroupResponse;

import java.util.List;

/**
 * TUserGroup表
 *
 * @author : 建投数据
 * @version : v1.0.0
 * @email :
 * @since : 2020-03-21 10:12:20
 */
public interface TUserGroupService {

    /**
     * 保存接口
     *
     * @param request 保存入参
     * @return int 是否保存成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    Long save(TUserGroup request);

    /**
     * 保存或修改接口
     *
     * @param request 保存或修改入参
     * @return int 是否保存或修改成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int saveOrUpdate(TUserGroup request);

    /**
     * 删除接口
     *
     * @param request 删除入参
     * @return int 是否物理删除成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int deleteByPrimaryKey(TUserGroup request);

    /**
     * 删除接口
     *
     * @param request 删除入参
     * @return int 是否逻辑删除成功
     * @auther 建投数据科技(山东)有限公司
     * @date 2020-3-11 20:58:44
     */
    int deleteByPrimaryKeyLogically(TUserGroup request);

    /**
     * 修改
     *
     * @param request 修改入参实体类
     * @return int 是否修改成功
     */
    int updateByPrimaryKeySelective(TUserGroup request);

    /**
     * 详情
     *
     * @param request 详情查询实体类
     * @return TUserGroup数据库查询返回的实体类
     * @auther
     */
    TUserGroup getByPrimaryKey(TUserGroup request);

    /**
     * 不分页查询
     *
     * @param request 查询入参实体类
     * @return 实体类列表
     */
    List<TUserGroup> listAllRecord(TUserGroup request);

    /**
     * 用户组添加
     *
     * @param tUserGroupAddOrUpdateRequest
     * @return
     */
    RestResult<String> updateUserGroup(TUserGroupAddOrUpdateRequest tUserGroupAddOrUpdateRequest);

    /**
     * description: 用户组分页查询
     *
     * @author: jackHe
     * @time: 2020/6/9 11:34
     */
    RestResult<PageResult<TUserGroupResponse>> queryPage(TUserGroupRequest request);

    /**
     * description: 根据ID删除
     *
     * @author: jackHe
     * @time: 2020/6/9 20:43
     */
    RestResult<String> deleteById(TUserGroup tUserGroup);

    /**
     * 筛选会员
     *
     * @param tUserGroupAddOrUpdateRequest
     * @return
     */
    List<String> screeningMember(TUserGroupAddOrUpdateRequest tUserGroupAddOrUpdateRequest);

    /**
     * 通过用户组和标签Ids查询会员
     *
     * @param tripLabelArrayRequest
     * @return
     */
    List<String> queryMemberIds(TripLabelArrayRequest tripLabelArrayRequest);

    /**
     * 刷新分组
     *
     * @return
     */
    RestResult<String> refreshGroup(TUserGroupAddOrUpdateRequest tUserGroupAddOrUpdateRequest);

    /**
     * 定时刷新分组
     *
     * @return
     */
    RestResult<String> timeToRefreshGrouping();

    /**
     * 通过用户组查询会员
     *
     * @param tripUserGroupRequest
     * @return
     */
    List<String> queryMemberIdsByUserGroup(TripUserGroupRequest tripUserGroupRequest);

    /**
     * 用户组更新标签表
     *
     * @param tUserGroupAddOrUpdateRequest
     * @return
     */
    RestResult<String> updateLabelTableUserGroups(TUserGroupAddOrUpdateRequest tUserGroupAddOrUpdateRequest);
}

